<!DOCTYPE html>
<html lang=zh>
<head><meta name="generator" content="Hexo 3.9.0">
    <!-- so meta -->
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="HandheldFriendly" content="True">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta name="description" content="logistic 回归将会用到的符号讲解logistic 回归是一个用于二分分类的算法，输入一个 x，输出的值 y 是 0 或者 1 举个简单的例子，现在有一张图片，算法需要判断图片中是否出现了猫，如果出现了记结果为 1，否则结果为 0计算机表示图片的方式是将每个像素点描述成一个 RGB 的三元组，这样一张 64x64 像素的图片就需要 3 个 64*64 的矩阵来表示，矩阵中的每一项都代表着当前">
<meta property="og:type" content="website">
<meta property="og:title" content="月光倾城的代码小屋">
<meta property="og:url" content="https://andyliwr.github.io/others/ai/logistic.html">
<meta property="og:site_name" content="月光倾城的代码小屋">
<meta property="og:description" content="logistic 回归将会用到的符号讲解logistic 回归是一个用于二分分类的算法，输入一个 x，输出的值 y 是 0 或者 1 举个简单的例子，现在有一张图片，算法需要判断图片中是否出现了猫，如果出现了记结果为 1，否则结果为 0计算机表示图片的方式是将每个像素点描述成一个 RGB 的三元组，这样一张 64x64 像素的图片就需要 3 个 64*64 的矩阵来表示，矩阵中的每一项都代表着当前">
<meta property="og:locale" content="zh-CN">
<meta property="og:image" content="https://file.lantingshucheng.com/1533654168188.png">
<meta property="og:image" content="https://file.lantingshucheng.com/1533654172009.png">
<meta property="og:image" content="https://file.lantingshucheng.com/1533740910262.png">
<meta property="og:image" content="https://file.lantingshucheng.com/1533746571391.png">
<meta property="og:updated_time" content="2020-01-15T06:30:09.120Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="月光倾城的代码小屋">
<meta name="twitter:description" content="logistic 回归将会用到的符号讲解logistic 回归是一个用于二分分类的算法，输入一个 x，输出的值 y 是 0 或者 1 举个简单的例子，现在有一张图片，算法需要判断图片中是否出现了猫，如果出现了记结果为 1，否则结果为 0计算机表示图片的方式是将每个像素点描述成一个 RGB 的三元组，这样一张 64x64 像素的图片就需要 3 个 64*64 的矩阵来表示，矩阵中的每一项都代表着当前">
<meta name="twitter:image" content="https://file.lantingshucheng.com/1533654168188.png">
    
    
        
          
              <link rel="shortcut icon" href="/images/favicon.ico">
          
        
        
          
            <link rel="icon" type="image/png" href="/images/favicon-192x192.png" sizes="192x192">
          
        
        
          
            <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png">
          
        
    
    <!-- title -->
    <title>月光倾城的代码小屋</title>
    <!-- styles -->
    <link rel="stylesheet" href="/css/style.css">
    <!-- persian styles -->
    
      <link rel="stylesheet" href="/css/rtl.css">
    
    <!-- rss -->
    
    
</head>

<body class="max-width mx-auto px3 ltr">
    
    <div class="content index py4">
        
          <header id="header">
  <a href="/">
  
    
      <div id="logo" style="background-image: url(https://file.lantingshucheng.com/1544183173428.ico);"></div>
    
  
    <div id="title">
      <h1>月光倾城的代码小屋</h1>
    </div>
  </a>
  <div id="nav">
    <ul>
      <li class="icon">
        <a href="#"><i class="fas fa-bars fa-2x"></i></a>
      </li>
       
        <li><a href="/">首页</a></li>
       
        <li><a href="/archives/">归档</a></li>
       
        <li><a href="/search/">搜索</a></li>
       
        <li><a href="/tags/">标签</a></li>
       
        <li><a href="/others/">其他文章</a></li>
      
    </ul>
  </div>
</header>

        
        <article class="post" itemscope itemtype="http://schema.org/BlogPosting">
  

  <div class="content" itemprop="articleBody">
      
        <h3 id="logistic-回归将会用到的符号讲解"><a href="#logistic-回归将会用到的符号讲解" class="headerlink" title="logistic 回归将会用到的符号讲解"></a>logistic 回归将会用到的符号讲解</h3><p>logistic 回归是一个用于二分分类的算法，输入一个 x，输出的值 y 是 0 或者 1</p>
<p>举个简单的例子，现在有一张图片，算法需要判断图片中是否出现了猫，如果出现了记结果为 1，否则结果为 0<br>计算机表示图片的方式是将每个像素点描述成一个 RGB 的三元组，这样一张 64x64 像素的图片就需要 3 个 64*64 的矩阵来表示，矩阵中的每一项都代表着当前图片位置的 RGB 的值。</p>
<p><img src="https://file.lantingshucheng.com/1533654168188.png" alt="图片的表示"></p>
<p>然后我们需要将三个矩阵转化成一个特征向量，特征向量是一个 1x(3<em>64</em>64)的矩阵(特征向量的维度就是 3<em>64</em>64=12288)，也就是 R 矩阵从左往右依次竖着排列，接下来是 G 矩阵，最后是 B 矩阵。</p>
<p>我们将特征向量作为 x 值输入，得到的 0 或者 1 作为 y 值，x 和 y 组成的二维组(x, y)就是一个训练样本，n 个训练样本就组成了一个训练集—{(x1, y1), (x2, y2) … (xm, ym)}。</p>
<p>在训练神经网络模型的时候，x 的值可能是多维度的，每个 x 的值作为矩阵的一列，最后的输入集就是 X = [x1, x2, … xm], 假设每个 x 的维度是 nx，那么输入集的维度就是 m*nx。Y 作为输出集，可以表示为 Y = [y1, y2, … yn]</p>
<p><img src="https://file.lantingshucheng.com/1533654172009.png" alt="符号说明"></p>
<p><a href="https://file.lantingshucheng.com/1533739787344.pdf" target="_blank" rel="noopener">课件下载</a></p>
<h3 id="正式讲解-logistic-回归"><a href="#正式讲解-logistic-回归" class="headerlink" title="正式讲解 logistic 回归"></a>正式讲解 logistic 回归</h3><p>之前提到的例子，我们需要判断一张图片中是否包含猫，如果包含输出 1，不包含输出 0，转化下其实就是求解这张图片中出现猫的概率，肯定出现就是 1，肯定不出现就是 0，所以 x 是一个特征向量，y 则是一个 0 到 1 的实数。</p>
<p>先来试下线性回归，需要两个参数–斜率 w，以及偏移值 b，y=wx+b，这是最简单的回归，然而却存在很大的问题，当 x 足够到的时候 y 也会变成无穷大或者无穷小，无法将 y 的值限制在 0 和 1 之间，因此我们需要一个额外的函数 f，f(z) = 1 / (1+e^-z)，这样到 z 足够到的时候 e^-z 就会趋近于 0，f(z)就会趋近于 1，当 z 无穷小的时候，e^-z 就会趋近于无穷大，f(z)就会趋近于 0</p>
<p>真正的 logisti 回归 w 和 x 并非一个常量，b 可能是一个偏移矩阵，就像这样 b=[d1, d2, d3, … dnx]，当然它是竖着的。w 也可能是一个矩阵。</p>
<p><img src="https://file.lantingshucheng.com/1533740910262.png" alt="参数说明"></p>
<p><a href="https://file.lantingshucheng.com/1533744466749.pdf" target="_blank" rel="noopener">课件下载</a></p>
<p>给定 m 个样本，我们希望能求算出 w 以及 b，使得得出的结果尽可能的接近样本结果值，因此我们需要一个误差函数来衡量 w 和 b 的合理程度。<br>对于每个样本值 xi, 假设结果是 yi，根据 logistic 算法得到的结果是 zi, 那么预测值和实际结果值之间的距离可以表示为 (zi - yi)^2 / 2，这样我们就可以定义误差函数（又叫损失函数，用来衡量预测结果和实际结果的接近程度）了</p>
<h4 id="损失函数"><a href="#损失函数" class="headerlink" title="损失函数"></a>损失函数</h4><p>通过平方差来定义损失函数，可以会得到多个误差相近的模型，也就是可能会有多个最优解。我们可以使用另一个损失函数，f(yi, zi) = -(yi * log(zi) + (1-yi) * log(1-zi))，当 yi = 1 的时候，f = - (1 - log(zi))，为了使得损失值 f 越小，就得使得 log(zi) 越大，也就是 zi 越大，但是 zi 再大也不会超过 1，zi 越接近 1，损失值 f 就越趋近 0；当 yi = 0 的时候，f = - log(1-zi)，为了使得损失值 f 越小，就得使得 log(1-zi)越大，这样 zi 就必须足够的小，zi 越趋近于 0，损失值 f 就越趋近于 0。看，这完全符合现实。</p>
<p>损失函数并非只有这一种，有很多都能实现上述的效果。</p>
<h4 id="成本函数"><a href="#成本函数" class="headerlink" title="成本函数"></a>成本函数</h4><p>损失函数是体现单个样本的误差程度，成本函数则是衡量当前模型在全体训练样本上的误差程度（就是求平均值）</p>
<p>损失函数 j = (f(y1, z1) + f (y2, z2) + … + f(ym,zm)) / m</p>
<p>我们的最终目标就是要找到合适的 w 和 b，使得成本函数 j 的值越小越好</p>
<p><img src="https://file.lantingshucheng.com/1533746571391.png" alt="损失函数和成本函数"></p>
<h4 id="结尾"><a href="#结尾" class="headerlink" title="结尾"></a>结尾</h4><p>logistic 回归在真正的神经网络学习里可能只是一个非常小的神经网络，多个小的神经网络组合起来才能用于去解决更加复杂的问题。</p>

      
  </div>
</article>

        
        <footer id="footer">
  <div class="footer-left">
    Copyright &copy; 2020 Dikang Li
  </div>
  <div class="footer-right">
    <nav>
      <ul>
         
          <li><a href="/">首页</a></li>
         
          <li><a href="/archives/">归档</a></li>
         
          <li><a href="/search/">搜索</a></li>
         
          <li><a href="/tags/">标签</a></li>
         
          <li><a href="/others/">其他文章</a></li>
        
      </ul>
    </nav>
  </div>
</footer>

    </div>
</body>
</html>
<!-- styles -->
<link rel="stylesheet" href="/lib/font-awesome/css/all.min.css">
<link rel="stylesheet" href="/lib/justified-gallery/css/justifiedGallery.min.css">
<link rel="stylesheet" href="/lib/fancybox/jquery.fancybox.css">

<link rel="stylesheet" href="https://file.lantingshucheng.com/blog/v3/static/styles/gitalk.css">


<!-- jquery -->
<script src="/lib/jquery/jquery.min.js"></script>
<script src="/lib/justified-gallery/js/jquery.justifiedGallery.min.js"></script>
<script src="/lib/fancybox/jquery.fancybox.pack.js"></script>

<script type="text/javascript" src="https://file.lantingshucheng.com/blog/v3/static/scripts/md5.js"></script>
<script type="text/javascript" src="https://file.lantingshucheng.com/blog/v3/static/scripts/gitalk.min.js"></script>

<script src="/js/main.js"></script>
<!-- search -->

<!-- Google Analytics -->

<!-- Baidu Analytics -->

    <script type="text/javascript">
        var _hmt = _hmt || [];
        (function() {
            var hm = document.createElement("script");
            hm.src = "https://hm.baidu.com/hm.js?7851ca7a86be957be994acb77639a5be";
            var s = document.getElementsByTagName("script")[0];
            s.parentNode.insertBefore(hm, s);
        })();
    </script>

<!-- Disqus Comments -->


  <script type="text/javascript">
    window.onload = function(){
      if (window.location.href.indexOf('andyliwr.github.io') > -1) {
        var gitalk = new Gitalk({
          clientID: 'ad6f70df0c70d2b715f9',
          clientSecret: '40384bee244c1e17dd7c37733d21e9ef669e969c',
          repo: 'Andyliwr.github.io',
          owner: 'Andyliwr',
          admin: ['Andyliwr'],
          id: md5(location.pathname),
          distractionFreeMode: 'true'
        })
        gitalk.render('gitalk_thread')
      }
    }
  </script>


